#include "gtktogglebutton.h"
#include "gtktreemenu.h"
#include "gtktypebuiltins.h"
+#include "gtkeventcontrollerkey.h"
#include "a11y/gtkcomboboxaccessible.h"
const gchar *path,
GtkComboBox *combo_box);
static void gtk_combo_box_update_sensitivity (GtkComboBox *combo_box);
-static gboolean gtk_combo_box_menu_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer data);
+static gboolean gtk_combo_box_menu_key (GtkEventControllerKey *key,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkComboBox *combo_box);
static void gtk_combo_box_menu_popup (GtkComboBox *combo_box);
/* cell layout */
gtk_widget_class_bind_template_child_internal_private (widget_class, GtkComboBox, popup_widget);
gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_button_toggled);
gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_menu_activate);
- gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_menu_event);
+ gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_menu_key);
gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_menu_show);
gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_menu_hide);
}
static gboolean
-gtk_combo_box_menu_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
+gtk_combo_box_menu_key (GtkEventControllerKey *key,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkComboBox *combo_box)
{
- GtkComboBox *combo_box = GTK_COMBO_BOX (data);
+ GtkWidget *widget;
+ GdkEvent *event;
+
+ widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (key));
+ event = gtk_get_current_event ();
if (!gtk_bindings_activate_event (G_OBJECT (widget), (GdkEventKey *)event))
{
- /* The menu hasn't managed the
- * event, forward it to the combobox
- */
- return gtk_bindings_activate_event (G_OBJECT (combo_box), (GdkEventKey *)event);
+ gtk_event_controller_key_forward (key, GTK_WIDGET (combo_box));
}
- return GDK_EVENT_PROPAGATE;
+ g_object_unref (event);
+
+ return TRUE;
}
/*
<object class="GtkTreeMenu" id="popup_widget">
<property name="cell-area">area</property>
<signal name="menu-activate" handler="gtk_combo_box_menu_activate" swapped="no"/>
- <signal name="event" handler="gtk_combo_box_menu_event" swapped="no"/>
<signal name="show" handler="gtk_combo_box_menu_show" swapped="no"/>
<signal name="hide" handler="gtk_combo_box_menu_hide" swapped="no"/>
+ <child>
+ <object class="GtkEventControllerKey">
+ <signal name="key-pressed" handler="gtk_combo_box_menu_key" swapped="no"/>
+ <signal name="key-released" handler="gtk_combo_box_menu_key" swapped="no"/>
+ </object>
+ </child>
</object>
</interface>